// HNOI2003 激光炸弹
#include <iostream>
using namespace std;
const int N = 5010;
typedef long long LL;
int a[N][N];
int f[N][N];

int n, m;

int main()
{
    cin >> n >> m;

    for(int i = 1;i <= n;i++)
    {
        int x, y, v;
        cin >> x >> y >> v;
        x++; y++;// 让坐标从1开始
        a[x][y] += v; // 同一位置可能会有多个点
    }

    n = 5001;
    // 预处理前缀数组
    for(int i = 1;i < N;i++)
    {
        for(int j = 1;j < N;j++)
        {
            f[i][j] = f[i - 1][j] + f[i][j - 1] - f[i - 1][j - 1] + a[i][j];
        }
    }

    int ret = 0;
    m = min(m, n); // 如果m过于大，相当于摧毁整个区域
    for(int x2 = n;x2 >= m;x2--)
    {
        for(int y2 = n;y2 >= m;y2--)
        {
            int x1 = x2 - m + 1;
            int y1 = y2 - m + 1;
            int t = f[x2][y2] - f[x1 - 1][y2] - f[x2][y1 - 1] + f[x1 - 1][y1 - 1];
            ret = max(ret, t);
        }
    }

    cout << ret << endl;
    return 0;
}